This relates generally to storage class memory.
Storage class memory is a non-volatile memory (NVM) that includes dynamic, random access memory-like performance and storage-like non-volatility.
An example of a storage class memory is a phase change memory with an access device. Other examples include ferroelectric random access memory, magnetoresistive memory, resistive random access memory, programmable metallization cell memory, and nano-wire based charge trapping memories, to mention some examples.
Currently, there is no architecture that fully utilizes storage class non-volatile memory in a way that can achieve high performance, high reliability and high compatibility. The two incumbent architectural models for integration include a memory based model and a storage based model. In a memory based model, storage class non-volatile memory is attached to a memory controller. Although this model can achieve high performance, it provides lower reliability than the model using an input/output controller due to the possibility of stray writes from kernel code with bugs. Thus the storage class memory may be improperly written and data may be permanently lost in some cases.
In storage based models, the storage class memory is used as a disk replacement and accessed through an input/output controller such as the Peripheral Component Interconnect (PCI) Express bus or the Serial Advanced Technology Attachment (SATA). This model provides high reliability by disallowing direct access to the non-volatile memory space and it also provides high compatibility by using a disk-like interface. However, it suffers from lower performance due to the slower input/output interface.